package com.micro.ai.template.dto.request;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.Data;

import java.util.List;

/**
 * 创建模板请求
 *
 * @author micro-ai
 * @since 0.0.1
 */
@Data
@Schema(description = "创建模板请求")
public class TemplateCreateRequest {

    @NotBlank(message = "模板名称不能为空")
    @Size(min = 2, max = 200, message = "模板名称长度必须在2-200之间")
    @Schema(description = "模板名称", example = "智能客服助手", requiredMode = Schema.RequiredMode.REQUIRED)
    private String templateName;

    @NotBlank(message = "模板描述不能为空")
    @Size(max = 1000, message = "模板描述长度不能超过1000")
    @Schema(description = "模板描述", example = "提供7*24小时智能客服服务，支持多轮对话", requiredMode = Schema.RequiredMode.REQUIRED)
    private String description;

    @NotBlank(message = "分类ID不能为空")
    @Schema(description = "分类ID", example = "customer_service", requiredMode = Schema.RequiredMode.REQUIRED)
    private String categoryId;

    @Schema(description = "作者显示名称", example = "张三")
    private String author;

    @Schema(description = "许可证", example = "MIT", allowableValues = {"MIT", "Apache-2.0", "GPL-3.0", "BSD-3-Clause", "Proprietary"})
    private String license;

    @Schema(description = "最低系统版本", example = "1.0.0")
    private String minSystemVersion;

    @Schema(description = "是否公开", example = "true")
    private Boolean isPublic;

    @Schema(description = "标签列表", example = "[\"客服\", \"对话\", \"NLP\"]")
    private List<String> tags;

    @Schema(description = "封面图片URL", example = "https://example.com/cover.jpg")
    private String coverImage;
}

